package club.kingyin.kyblog.core.utils.log;

import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.*;
import java.util.TreeMap;
import java.util.TreeSet;

/**
 * @author : kingyins
 * @version : 1.0
 * @program : Ky-Blog
 * @description : 在此处添加类描述
 * @create : 2021年08月13日 16:19
 **/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Log(postProcessor = {PostProcessorSecurity.class, PostProcessorConsole.class})
public @interface LogConsole{

    @AliasFor(
            annotation = Log.class,
            attribute = "module"
    )
    String module() default "";

    @AliasFor(
            annotation = Log.class,
            attribute = "operator"
    )
    String operator() default "";

    @AliasFor(
            annotation = Log.class,
            attribute = "sources"
    )
    Class<? extends BeforePostProcessor> sources() default BeforePostProcessorDefault.class;


    // 方法处理器 泛型是辅助处理器
    @AliasFor(
            annotation = Log.class,
            attribute = "execute"
    )
    Class<? extends ExecutePostProcessor<?>>execute() default ExecutePostProcessorDefault.class;

    // 异常处理
    @AliasFor(
            annotation = Log.class,
            attribute = "exception"
    )
    Class<? extends CallExceptionHandler> exception() default CallExceptionHandlerDefault.class;

}
